Skip to content

feat(web): launch sqlrite.dev — landing, /docs, benchmarks viz, doc sweep (SQLR-1)#117

Merged
joaoh82 merged 2 commits into
mainfrom
feat/website-sqlr-1
May 9, 2026
Merged

feat(web): launch sqlrite.dev — landing, /docs, benchmarks viz, doc sweep (SQLR-1)#117
joaoh82 merged 2 commits into
mainfrom
feat/website-sqlr-1

Conversation

@joaoh82

@joaoh82 joaoh82 commented May 9, 2026

Copy link
Copy Markdown
Owner

Summary

Two coordinated changes that share a goal: give SQLRite a public face that actually matches what the engine does today.

1. New website under web/ — a Next.js 15 + Tailwind v4 site, faithful to the Claude Design prototype but with content driven from a typed config that mirrors the canonical docs. Two pages, eleven sections, no client-side chart library, deploys to Vercel out of the box.

2. Repo doc sweepdocs/roadmap.md, docs/supported-sql.md, and docs/_index.md had drifted behind nine minor releases of actual SQL-surface work. Promoted the v0.2.0 → v0.9.1 wave from "Possible extras" into a real Phase 9 (sub-phases 9a–9i) and added Phase 10 (benchmarks). Same reality now reflects on both the website and on main.

Closes SQLR-1.

What's on the site

Landing (/)

# Section Highlights
01 Hero Animated SQL REPL, install bar, Phases 0–10 shipped · v0.9.1 meta
02 Features 12-card grid — pager, B-tree, WAL, transactions, JOINs + aggregates, prepared statements, HNSW, FTS, free-list + auto-VACUUM, six SDKs, Tauri + MCP, "built to be read"
03 Architecture 7-layer diagram, input → storage
04 Roadmap Timeline matching docs/roadmap.md 1:1, including Phase 9 sub-phases and Phase 10
05 SDKs Tabbed Rust / Python / Node / Go / C / WASM with copy-pasteable examples
06 SQL surface Statement table including JOINs, aggregates, ALTER, DROP, VACUUM, PRAGMA, prepared statements + an honest "not yet supported" pill list
07 Benchmarks Pure-CSS proportional bars, per-row normalized so "shorter = faster" lines up with "lower is better". Three headline stats, four chart groups (HNSW win / OLTP read paths / FTS + hybrid / DuckDB analytical lead), four SQLR-tagged engineering debts, methodology footer with links to the canonical doc + raw JSON envelope
08 Desktop Tauri 2.0 + Svelte 5 mockup with download buttons
09 Blog Medium series cards
CTA + Footer Author socials (GitHub, LinkedIn, X — @CodePolyglot)

Docs (/docs)

Sticky sidebar nav + on-page TOC. New sections for JOINs, GROUP BY & aggregates, ALTER / DROP / VACUUM, prepared statements, PRAGMA, vector search, full-text search, MCP server. The "Supported SQL" summary at the bottom now lists JOINs, aggregates, predicates, prepared statements, pragmas as their own bullets.

Benchmarks visualization

The marquee piece — designed for the dark-editorial / terminal vibe rather than reaching for a chart library.

  • Three headline stats with big mono numbers in oklch accent: ~50× HNSW vs brute-force, 1.6–1.9× read-path gap vs SQLite, 608 µs hybrid retrieval at 1k docs.
  • Four chart groups, each in a bordered card. Each row's bars are sized relative to the slowest in that row — so the brute-force scan is a full-width bar next to a tiny HNSW sliver (the marquee story), and DuckDB gets clamped to 1.5% min on aggregates so the µs label is still readable.
  • Engineering debts table publishes SQLR-18 / 19 / 20 / 21 honestly with root-cause sketches.
  • Methodology footer with date, host (Apple M1 Pro), commit short SHA, and links back to docs/benchmarks.md + the raw JSON envelope.

Update path on the next pinned-host run: edit RUN_META.date / commit / sourcePath and any affected median_ns + label fields in web/src/lib/benchmarks.ts. The visualization scales itself — no chart-library upgrade dance.

Doc sweep

docs/roadmap.md

Promoted Phase 9 (v0.2.0 → v0.9.1) and Phase 10 (benchmarks) into the document. Each sub-phase points at its release and SQLR ticket:

Sub-phase Release Ticket What
9a v0.3.0 DEFAULT / DROP TABLE / DROP INDEX / ALTER TABLE
9b v0.4.0 SQLR-6 Free-list + manual VACUUM
9c v0.5.0 SQLR-10 Auto-VACUUM trigger past 25%
9d v0.5.1 SQLR-7 IS NULL / IS NOT NULL + Option<Value> INSERT
9e v0.6.0 SQLR-3 GROUP BY + aggregates + DISTINCT + LIKE + IN
9f v0.7.0 SQLR-5 JOINs — INNER, LEFT, RIGHT, FULL OUTER
9g v0.9.0 SQLR-23 Prepared statements + ? parameter binding
9h v0.9.0 SQLR-28 HNSW probe widened to cosine + dot
9i v0.9.1 SQLR-13 PRAGMA dispatcher + auto_vacuum knob
10 SQLR-4 / 16 SQLR-4 / SQLR-16 benchmark harness

The "Possible extras" tail block now lists only what's actually open: subqueries, CTEs, HAVING, CASE, BETWEEN, GLOB / REGEXP, OFFSET, multi-column ORDER BY, MVCC, savepoints, more pragmas, etc.

docs/supported-sql.md

The body was correct; the "Not yet supported" section had been self-contradicting (claiming GROUP BY / aggregates / LIKE / IN / ALTER / DROP / VACUUM weren't supported while the body documented them in detail). Pruned the now-stale entries; left HAVING, BETWEEN, GLOB / REGEXP, GROUP_CONCAT, named placeholders, MVCC, etc.

docs/_index.md

"Project state" section gained Phase 9 + Phase 10 lines so a first-time reader sees them at a glance.

Stack notes

  • Next.js 15.5.18 (pinned) + React 19 + TypeScript (strict) + Tailwind v4 (CSS-first @theme in src/app/globals.css) + shadcn/ui infrastructure (components.json + cn helper).
  • next/font for Inter + JetBrains Mono.
  • "use client" only on the three components that need state (terminal, install-bar, sdk-showcase); everything else is RSC.
  • SQL highlighter is a tokenizer returning React nodes — no dangerouslySetInnerHTML anywhere.
  • Single source of truth for every URL and version string lives in web/src/lib/site.ts.

Test plan

  • cd web && npm install
  • npm run typecheck — clean
  • npm run lint — no warnings or errors
  • npm run build — 5 static pages, 3.9 kB / 110 kB First Load JS landing
  • Render-test against dev server: every section heading, version string, social URL, eyebrow tag, bar width, benchmark stat verified via curl + grep
  • No dangerouslySetInnerHTML in the tree (code-reviewer-confirmed)
  • Visual smoke-check on Vercel preview (will land here after the PR opens a preview)
  • Anchor scroll behavior on /docs (sidebar links jump correctly; scroll-spy follow-up tracked separately as SQLR-29)

Vercel deploy

Point Vercel at web/ as the Root Directory. Framework preset auto-detects Next.js. No environment variables required.

Follow-ups (already filed in marvinapp)

  • SQLR-29 Add scroll-spy to /docs sidebar nav
  • SQLR-30 Wire web/ build + lint into CI (paths-filtered job)
  • SQLR-31 Track Next.js / postcss transitive advisory in web/

Diff scope

$ git diff --stat origin/main..HEAD
 CLAUDE.md             |    1 +
 README.md             |    2 ++
 docs/_index.md        |    2 ++
 docs/roadmap.md       |   87 +++++++-
 docs/supported-sql.md |   28 ++-
 web/{...}             | 10832 +++++++++++++++++++++ (33 new files)

🤖 Generated with Claude Code

joaoh82 and others added 2 commits May 9, 2026 13:35
The roadmap, supported-SQL reference, and the docs index had drifted
behind nine minor releases of actual SQL-surface work. Each item below
was independently shipped under its own SQLR-* / PR but had been
languishing under "Possible extras" or in the "Not yet supported"
list — confusing for anyone reading the docs to figure out what the
engine actually does today.

Phase 9 (v0.2.0 → v0.9.1) — promoted from "extras" to a real phase:

  9a · v0.3.0 · DEFAULT clause + DROP TABLE/INDEX + ALTER TABLE
  9b · v0.4.0 · free-list + manual VACUUM (SQLR-6)
  9c · v0.5.0 · auto-VACUUM trigger past 25% (SQLR-10)
  9d · v0.5.1 · IS NULL / IS NOT NULL + Option<Value> INSERT (SQLR-7)
  9e · v0.6.0 · GROUP BY + aggregates + DISTINCT + LIKE + IN (SQLR-3)
  9f · v0.7.0 · JOINs — INNER, LEFT, RIGHT, FULL OUTER (SQLR-5)
  9g · v0.9.0 · prepared statements + ? param binding (SQLR-23)
  9h · v0.9.0 · HNSW probe widened to cosine + dot (SQLR-28)
  9i · v0.9.1 · PRAGMA dispatcher + auto_vacuum knob (SQLR-13)

Phase 10 — benchmarks vs SQLite + DuckDB (SQLR-4 / SQLR-16, twelve
workloads, pinned-host runs published).

Also fixed:

  - docs/supported-sql.md "Not yet supported" was self-contradicting:
    body documented LIKE / IN / GROUP BY / aggregates / DISTINCT /
    ALTER TABLE / DROP / VACUUM in detail, then claimed they weren't
    supported. Pruned the now-stale entries; left HAVING, BETWEEN,
    GLOB / REGEXP, GROUP_CONCAT, named placeholders, MVCC, etc.
  - docs/_index.md "Project state" gained Phase 9 + Phase 10 lines.
  - The "Active frontier" callout at the top of roadmap.md no longer
    points at the v0.2.0 milestone (already shipped six minor releases
    ago).
  - The "Possible extras" tail block now lists only what's actually
    open (subqueries, CTEs, HAVING, CASE, BETWEEN, OFFSET, multi-col
    ORDER BY, MVCC, savepoints, more pragmas, etc.).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
A new Next.js 15 + Tailwind v4 site under web/, intentionally
self-contained (own package.json, no Cargo coupling) so it can be
extracted into its own repo later without rewrites. Deploys to Vercel
out of the box — point Vercel at web/ as the Root Directory and the
framework preset handles the rest.

Two pages, eleven sections, no client-side chart library.

Landing (/)

  01 Hero · animated SQL REPL + cargo-install bar, hero-meta calls out
     "Phases 0–10 shipped · v0.9.1 on crates.io / PyPI / npm"
  02 Features · 12-card grid covering pager, B-tree, WAL, transactions,
     JOINs + aggregates, prepared statements, HNSW, FTS, free-list +
     auto-VACUUM, six SDKs, Tauri + MCP, "built to be read"
  03 Architecture · 7-layer diagram from input → storage
  04 Roadmap · timeline with done / active / next states; Phase 9
     sub-phases (v0.2.0 → v0.9.1) and Phase 10 (benchmarks) match the
     repo's docs/roadmap.md 1:1
  05 SDK switcher · tabbed Rust/Python/Node/Go/C/WASM with per-SDK
     install command, version, registry, and a copy-pasteable example
  06 SQL surface · statement table including JOINs, aggregates,
     ALTER TABLE, DROP TABLE/INDEX, VACUUM, PRAGMA, prepared statements;
     plus an honest "not yet supported" pill list
  07 Benchmarks · pure-CSS proportional bars (no chart library) sized
     per-row so "shorter = faster" lines up with "lower is better".
     Three headline stats (~50× HNSW, 1.6–1.9× read-path gap, 608 µs
     hybrid), four chart groups (the HNSW win, OLTP read paths, FTS +
     hybrid, DuckDB analytical lead), four SQLR-tagged engineering
     debts, and links to the canonical doc + raw JSON envelope
  08 Desktop · Tauri 2.0 + Svelte 5 mockup with download buttons
  09 Blog · four-card grid pointing at the Medium series
     CTA strip + footer with author socials (GitHub, LinkedIn, X)

Docs (/docs)

  Sticky sidebar nav + on-page TOC. New sections for JOINs,
  GROUP BY & aggregates, ALTER / DROP / VACUUM, prepared statements,
  PRAGMA, vector search, full-text search, the MCP server. The
  "Supported SQL" summary lists JOINs, aggregates, predicates,
  prepared statements, pragmas as their own bullets.

Stack

  - Next.js 15.5.18 (App Router) + React 19 + TypeScript (strict)
  - Tailwind v4 (CSS-first @theme config in src/app/globals.css)
  - shadcn/ui infrastructure (components.json + cn helper) — bespoke
    components on top, no premature abstraction
  - lucide-react for icons; next/font for Inter + JetBrains Mono
  - "use client" only where state lives (terminal, install-bar,
    sdk-showcase). Everything else is a Server Component.
  - SQL highlighter is a tokenizer that returns React nodes — no
    dangerouslySetInnerHTML anywhere in the tree.

Verified:

  - npm run typecheck ✓
  - npm run lint        ✓ (no warnings)
  - npm run build       ✓ — 5 static pages, 3.9 kB / 110 kB First Load
                          JS landing
  - render-test on dev server: every nav anchor resolves; per-row
    benchmark bar widths come out at the right proportions (HNSW
    1.99% next to brute-force 100%, DuckDB clamped to 1.5% min so
    label is still readable)

CLAUDE.md + README.md gain a one-line pointer to web/ so a
first-time reader of the repo finds the site without grepping.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@joaoh82 joaoh82 merged commit a35ff2f into main May 9, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant